package shopping;

import java.util.ArrayList;
import java.util.List;

public class Cart {
    private List<Item> cartItems; // 购物车商品列表
    private int maxCapacity;      // 最大容量

    public Cart(int maxCapacity) {
        this.cartItems = new ArrayList<>();
        this.maxCapacity = maxCapacity;
    }

    public boolean addItemToCart(Item item, int quantity) {
        if (cartItems.size() >= maxCapacity) {
            System.out.println("购物车已满，无法添加更多商品！");
            return false;
        }

        if (item.getQuantity() < quantity) {
            System.out.println("库存不足，无法添加商品：" + item.getName());
            return false;
        }

        // 检查购物车是否已有该商品
        for (int i = 0; i < cartItems.size(); i++)
        {Item cartItem = cartItems.get(i);
            if (cartItem.getName().equals(item.getName())) {
                cartItem.setQuantity(cartItem.getQuantity() + quantity);
                item.setQuantity(item.getQuantity() - quantity);
                System.out.println(item.getName() + " 已更新购物车数量。");
                return true;
            }
        }

        // 如果购物车中没有该商品
        cartItems.add(new Item(item.getName(), item.getCategory(), item.getPrice(), quantity));
        item.setQuantity(item.getQuantity() - quantity);
        System.out.println(item.getName() + " 已成功添加到购物车！");
        return true;
    }

    public boolean removeItemFromCart(String itemName) {
        for (int i = 0; i < cartItems.size(); i++)
        {  Item cartItem = cartItems.get(i);
            if (cartItem.getName().equals(itemName)) {
                cartItems.remove(cartItem);
                System.out.println(itemName + " 已从购物车移除！");
                return true;
            }
        }
        System.out.println("购物车中未找到商品：" + itemName);
        return false;
    }

    public void viewCart() {
        if (cartItems.isEmpty()) {
            System.out.println("购物车为空！");
        } else {
            System.out.println("购物车商品如下：");
            for (int i = 0; i < cartItems.size(); i++)
              { Item cartItem = cartItems.get(i);
                System.out.println(cartItem);
            }
        }
    }

    public double checkout() {
        double total = 0;
        for (int i = 0; i < cartItems.size(); i++)
        { Item cartItem = cartItems.get(i);
            total += cartItem.getPrice() * cartItem.getQuantity();
        }
        cartItems.clear(); // 结算完成后清空购物车
        System.out.println("结算成功！总金额为：" + total + "元");
        return total;
    }
}
